草庐IT

VBScript 条件语句

全部标签

C++ - 为什么程序在映射迭代器中使用 if 语句崩溃?

我是C++的新手,我试图在传递if语句的同时遍历映射。但是程序崩溃了。请帮我修复程序。#include#include#include#include#includeusingnamespacestd;intmain(){std::maph;std::map::iteratorit;h[1]=2;h[4]=5;for(it=h.begin();it!=h.end();it++){if(it->second>4){h.erase(it->first);}} 最佳答案 您正在删除for循环内的元素,指向已删除元素(即it)的迭代器将失效

c++ - 为什么我的 cout 语句在打开文本文件后不打印?

我正在尝试编写一个程序,我在其中读取文本文件,然后获取文本文件中的每一行并将它们存储在字符串vector中。我想我可以打开文本文件,但是我注意到在我打开文本文件之后,该点之后的任何内容都不会执行。例如,当我输入一个不存在的文件名时,我的main函数末尾有一个cout语句输出。但是,如果我输入一个确实存在的文件名,我从最后一个cout语句中得不到任何输出。有谁知道这是为什么?谢谢!intmain(){vectorline;stringfileName="test.txt";ifstreammyFile(fileName.c_str());inti=0;intcount=0;vectorl

c++ - 处理条件编译的多个条件的最佳方法

我有一个模板类,它有一个方法,其中模板参数指定该方法的输入和输出,如下所示:templateclassFoo{Outfn(constIn&in){Outout;returnout;}}所以我尝试了这个,但是当尝试将void用于In或Out时(可能很明显)出现错误。所以我尝试添加多种方法,这些方法是这个主题的变体,希望它们的替换能够启用相关功能并禁用无效功能:template::value>*=nullptr>OutputTypefn(){OutputTypeout;returnout;}template::value)&&(!std::is_void::value)>*=nullptr

c++ - 条件运算符的值类别

考虑以下代码:intx;int&f(){returnx?x:throw0;}使用gccversion7.3.0(Ubuntu7.3.0-27ubuntu1~18.04)我得到以下编译错误:cannotbindnon-constlvaluereferenceoftype‘int&’toanrvalueoftype‘int’请注意,这在clang中编译得很好。这是(我认为是)标准中的相关声明:N4659[8.16.2.1](ConditionalOperator):Thesecondorthethirdoperand(butnotboth)isa(possiblyparenthesized

c++ - 我的程序跳过返回语句

我的程序有这个功能:vectorLevel::getItemsAt(constPoint&pt){vectorvect(items.size());//copyallitemsatpt'spositiontovectremove_copy_if(items.begin(),items.end(),vect.begin(),boost::bind(matchesPosition,_1,pt));//updateLevelMapandreturnmap.setHasItem(pt,false);returnvect;}编译正常(我使用的是g++,我的gcc版本是4:4.4.1-1ubunt

c++ - 在 switch 语句中使用类类型 : is it better than using typeid operator?

我在下面看到了有关C++标准$6.4.2中switch语句的内容。Switch语句可以带一个条件。Theconditionshallbeofintegraltype,enumerationtype,orofaclasstypeforwhichasingleconversionfunctiontointegralorenumerationtypeexists(12.3).Iftheconditionisofclasstype,theconditionisconvertedbycallingthatconversionfunction,andtheresultoftheconversion

C++——如何从 STL 容器中有效地删除具有这种条件的元素?

给定以下代码,structStudent{intscore;}queuestdQueue;如果学生的分数低于前一个学生,我想从列表中删除学生。如何高效地做到这一点?例如S1(100)获取S1(100) 最佳答案 您可以编写自定义谓词并使用remove_if。谓词可以是一个仿函数,它总是存储前一个Student的score。像这样:classScoreLessThanPrevious{public:ScoreLessThanPrevious():isFirst(true),previousScore(0){}booloperator(

C++,预处理器语句

谁能解释一下这条语句的作用?#defineCONST_SIG(void(*)())1 最佳答案 此语句将CONST_SIG定义为1转换为指向不获取参数并返回void的函数的指针。如果您有一个指向函数的指针并且您可能会测试它的真实性,那么这可能很有用,然后CONST_SIG将为真。您可以试用cdecl程序,它在许多linux发行版中都可用,用于C声明的“英文翻译”。此实例中的示例输出:cdecl>explain(void(*)())castunknown_nameintopointertofunctionreturningvoid旁注

c++ - 在循环的停止条件下访问数组值是否安全?

为了提高我的clique-partitioning程序的性能,它使用有序数组,我在for循环的停止条件中加入了对我正在循环进入的数组元素的访问。intmyValue=13;for(inti=0;array[i]这显然是不安全的,因为我的数组可能只包含小于myValue的值,所以我尝试了这个intmyValue=13;for(inti=0;i在这个实现中,一切似乎都很顺利,但是如果我切换条件,我就会陷入第一个例子的同样问题。intmyValue=13;for(inti=0;array[i]所以,我推断这显然是由于编译器设置两个条件的顺序的方式,因为在最后一种情况下,即使我要求仅当i是时才

c++ - 附加条件语句使程序更快

看完Whyisitfastertoprocessasortedarraythananunsortedarray?,我在主循环中添加了一个额外的测试。似乎这个额外的测试使程序更快。intmain(){//GeneratedataconstunsignedarraySize=32768;intdata[arraySize];for(unsignedc=0;c=128)sum+=data[c];//Withthisadditionaltest,executionbecomesfasterif(data[c](clock()-start)/CLOCKS_PER_SEC;std::cout通过附